Embedded systems (i.e., mobile electronic devices having embedded software/firmware), for example, mobile cellular phones, personal digital assistants (PDA's), pagers, MP3 players, digital cameras, etc. often contain firmware and/or application software that are either provided by the manufacturers of the electronic devices, telecommunication carriers, or third parties. Such electronic devices are typically called embedded systems because the firmware and application software that they contain are typically embedded in silicon memory, such as FLASH. However, firmware and/or application software often contain software bugs. New versions of the firmware and software are periodically released to fix the bugs, introduce new features, or both.
A fundamental problem in providing access to new releases of firmware and software is that the embedded systems (electronic devices) are often constrained in terms of resources, such as available memory. Attempts to upgrade firmware or software by end-users often results in making the device, or some features of the device inoperable. Additionally, when changes to a firmware component, such as a driver, need to be made, there is no easy way to swap the old one out and put in a new one. Typically, the device has to be reflashed by a new FLASH image that is created by recompiling all or most of the code and/or rebuilding the image file. It can be seen that there is a need for an architecture where such recompilation or rebuilding is either made unnecessary or minimized and simplified.
When a new version of a driver or a function is to be introduced into embedded systems, all references to the old driver or function that occur in all other software/firmware sections have to be changed. Similarly, when a data item is shifted around in the memory of an embedded device, all references to that particular data item need to be updated. These are two very important issues which must be faced by embedded system designers.
In current embedded system technology, for example in mobile electronic devices, firmware is simply one big mass making it very hard to manipulate or update individual functions or sections independently. It can be seen that there is a need for a next generation architecture that enables updates of independent components within cell phones and other embedded systems.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings appended hereto.